package com.nari.ncps.screen.common.enums;

import lombok.Getter;

import java.util.Objects;


/**
 * <p>
 * 产业信息枚举
 * </p>
 *
 * @author dongxiaoxu
 * @since 2025-09-23
 */
@Getter
public enum ModuleProductEnum {

    /**
     * 全产业
     */
    WHOLE(1,"全产业"),

    /**
     * 煤炭
     */
    COAL(2, "煤炭"),

    /**
     * 铝业
     */
    AL(3, "铝业"),

    /**
     * 火电
     */
    ELECTRIC(4, "火电"),

    /**
     * 路港
     */
    DRYPORT(5, "路港"),

    /**
     * 新能源
     */
    NE(6, "新能源");

    /**
     * AnnualEnum枚举的私有属性
     * id: 枚举值对应的数字标识
     * name: 枚举值的中文描述
     */
    private Integer id;
    private String name;

    /**
     * AnnualEnum构造函数
     * 
     * @param id   枚举值对应的数字标识
     * @param name 枚举值的中文描述
     */
    ModuleProductEnum(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    /**
     * 根据枚举的数字标识获取对应的中文描述
     * 
     * @param id 需要查找的枚举数字标识
     * @return 返回与数字标识匹配的中文描述，未找到时返回null
     */
    public static String getName(Integer id) {
        for (ModuleProductEnum operateEnum : ModuleProductEnum.values()) {
            if (Objects.equals(operateEnum.getId(), id)) {
                return operateEnum.getName();
            }
        }
        return null;
    }

    /**
     * 根据枚举的中文描述获取对应的数字标识
     * 
     * @param name 需要查找的枚举中文描述
     * @return 返回与中文描述匹配的数字标识，未找到时返回null
     */
    public static Integer getId(String name) {
        for (ModuleProductEnum operateEnum : ModuleProductEnum.values()) {
            if (Objects.equals(operateEnum.getName(), name)) {
                return operateEnum.getId();
            }
        }
        return null;
    }

    /**
     * 设置枚举值的数字标识（通常不需要调用）
     * 
     * @param id 新的数字标识
     */
    private void setId(Integer id) {
        this.id = id;
    }

    /**
     * 设置枚举值的中文描述（通常不需要调用）
     * 
     * @param name 新的中文描述
     */
    private void setName(String name) {
        this.name = name;
    }
}
